/**
 * @Project : algorithm-learning
 * @Author : Ruoyu Wang
 * @User : Momenta
 * @DateTime : 2024/3/23 13:49
 */

//小苯拿到了一个长度为n的数组a。他希望将a中的所有数字都变相等。为此他可以进行如下操作：
//选择两个下标1<=i,j<=n,i!=j,ai>=2，并执行ai=ai/2（下取整），aj=aj*2。
//（注意ai的范围，这意味着操作后ai,aj都必须为正数。）
//他想知道他能否将所有数字变相等，请你帮帮他吧。
//
//输入描述
//  本题有多组测试数据。
//  第一行一个正整数T(1<=T<=10^4)，表示数据组数。
//  接下来对于每组测试数据：
//  第一行一个正整数n(1<=n<=10^5)，表示数组a的长度。
//  第二行n个正整数a_i(1<=a_i<=10^9)，表示数组a的元素。
//  （保证所有测试数据中n的总和不超过10^5。）
//输出描述
//  输出包含T行，每行一个字符串，如果小苯可以做到则输出"YES"，否则输出"NO"。（不含双引号）
//
//示例1
//输入
//2
//5
//1 2 4 8 16
//4
//1 2 7 4
//输出
//YES
//NO
//说明
//  第一个测试数据，可以全部变成4.

#include <cstdio>
#include <iostream>
#include "algorithm"

using namespace std;

int main() {
    int t;
    scanf("%d", &t);
    while (t--) {
        int n;
        scanf("%d", &n);
        int a[n];
        for (int i = 0; i < n; i++) {
            scanf("%d", &a[i]);
        }
        sort(a, a + n);

        bool flag = false;
        for (int i = 0, j = n - 1; i < j; i++, j--) {
            while (a[i] < a[j]) {
                a[i] <<= 1;
                a[j] >>= 1;
            }
            if (a[i] != a[j]) {
                puts("NO");
                flag = true;
                break;
            }
        }
        if (!flag) {
            puts("YES");
        }
    }
}